During the early development of the World Wide Web (WWW), web development tools were limited in their ability to create dynamic Web applications that connected client to server and operated with other computing resources, such as databases. Until recently, HyperText Markup Language (HTML) was the dominant technology used in development of Web-based solutions. However, HTML quickly proved inadequate in a number of areas, including: (i) limited ability to generate only static websites; (ii) inability to scale; (iii) extreme slowness in case of sizable content; and (iv) necessity of updating material stored in HTML.
As sites on the World Wide Web grew increasingly complex to meet evolving consumer and user demands, developers sought means to provide web sites with dynamic content. Developers have since largely turned to web application servers to meet these needs. A web application server is regarded as a “middleman” server that operates between a Web server and one or more back-end servers, such as database, transaction, or advertising servers. Web application servers are frequently used by software developers to construct and work with various applications that operate on web sites dynamically. While a web application server is not a web application itself, it serves to provide the framework and environment in which web applications can be made. A simple example of a web application server might be the server that updates data on an Internet stock ticker.
Web browsers alone lack the necessary functionality to provide dynamic data. Web browsers simply make requests to web servers, which in turn fulfill those requests by returning the requested information to the browser. This information is usually delivered via HTML files or other, typically static, file types. Acting alone, web servers are of limited capability because they merely process user requests and respond by outputting data. They do not: (i) allow users to interact dynamically with databases, (ii) provide customized information and settings based on user requests, preferences, or history, or (iii) provide dynamic data such as stock market information. Thus, to extend the capabilities of a web server, a web application server is also often used. By using web application servers, web developers can build highly interactive and data-rich websites, including sites such as Amazon.com that utilize customer “shopping carts,” Ameritrade.com and other e-commerce or financial sites, and websites that are synchronized with database applications which can be queried using any number of user-defined criteria.
In addition to providing an environment in which a developer may create web applications, a web application server also provides developers with the numerous useful advantages and capabilities of the programming language used. These include templating, security modeling, scalability, data persistence, session renewal and many other features that developers find useful when constructing a web application. Common web application servers include Tomcat, IBM's WebSphere, and Sun's Java System Web Server.
AllFusion Harvest Change Manager (“Harvest”) is a comprehensive, integrated, repository-based change and configuration management solution. Also known as a ‘Change and Configuration Control’ (“CCC”), Harvest is essentially a software tool that allows users to manage complex, enterprise-wide software development activities at each stage of the application development cycle. For the purposes of this specification the following terms may be used interchangeably, and are intended to have the same meaning: change and configuration management, change management, configuration management, change and configuration control, change control, configuration control, change management and configuration management. Such products are used to manage change in software, in a controlled manner that allows a user to track changes that were made.
Harvest is made available by CA, Inc., and additional information regarding Harvest is available at www.ca.com. The deployment of applications such as Harvest to web application servers provides developers with a very powerful combination and an extremely robust programming environment. With such an arrangement, the intrinsic programming tools available to developers using Harvest are integrated over a network, allowing numerous developers to collaborate simultaneously to develop a project.
This arrangement also allows developers to collaborate remotely, over a local network server or across the Internet if desired. This being so, it allows developers to manage source code and other software development assets collectively across a network server. This allows developers working at different locations, on different portions of the same software application, to modify freely the software, experiment, and collaborate in the development process. Programs like Harvest are generally fully scalable and equipped to serve project teams working on both large and small distributed enterprise systems.
Numerous vendors provide the necessary software for setting up a web application server. Once set up, the web application servers provide numerous benefits and relative ease of use for developers. However, the deployment of software to the web application server requires technological skills and training that many information systems professionals may not possess. Deployment of software, such as Harvest, to a web application server requires a sizeable expenditure of time and resources by one of advanced skill in order to successfully deploy the software. For example, previous versions of Harvest used a command line utility to package a web application properly, and relied upon manual user steps to deploy the application to the application server (e.g., IBM's Websphere). Accordingly, in order to successfully deploy Harvest to a web application server, end users need a substantial familiarity with both Harvest and the web application server, with various parameters that were solicited during the deployment process, and with the proper commands necessary during the command line entry process used to deploy.